import {MenuTypeEnum} from '@/enums/MenuTypeEnum';

// 菜单查询参数类型
export interface MenuQuery {
    keywords?:string;
}

// 菜单视图对象类型
export interface MenuVo {
    // 子菜单
    children?:MenuVo[];
    // 组件路径
    component?:string;
    // ICON
    icon?:string;
    // 菜单ID
    id?:number;
    // 菜单名称
    name?:string;
    // 父菜单ID
    parentId?:number;
    // 按钮权限标识
    perm?:string;
    // 跳转路径
    redirect?:string;
    // 路由名称
    routeName?:string;
    // 路由相对路径
    routePath?:string;
    // 菜单排序（数字越小排名越靠前）
    sort?:number;
    // 菜单类型
    type?:MenuTypeEnum;
    // 菜单是否可见(1:显示,0:隐藏)
    visible:number;
}

// 菜单表单对象类型
export interface MenuForm {
    // 菜单ID
    id?:string;
    // 父菜单ID
    parentId?:number;
    // 菜单名称
    name?:string;
    // 菜单是否可见(1：是，0：否)
    visible:number;
    icon?:string;
    // 排序
    sort?:number;
    // 组件路径
    component?:string;
    // 路由路径
    path?:string;
    // 跳转路由路径
    redirect?:string;
    // 菜单类型
    type?:MenuTypeEnum;
    // 权限标识
    perm?:string;
    // [菜单]是否开启页面缓存
    keepAlive?:number;
    // [目录]只是一个子路由是否始终显示
    alwaysShow?:number;
    params?:keyValue[];
}
interface keyValue{
    key:string;
    value:string;
}
// RouteV0,路由对象
export interface RouteV0 {
    // 子路由列表
    children:RouteV0[];
    // 组件路径
    component?:string;
    meta?:Meta;
    // 路由名称
    name?:string;
    // 路由路径
    path?:string;
    // 跳转链接
    redirect?:string;
}

// Meta,路由属性类型
export interface Meta{
    // [目录]只是一个子路由是否始终显示
    alwayShow?:boolean;
    // 是否隐藏(true-是  false-否)
    hidden?:boolean;
    // ICON
    icon?:string;
    // 菜单是否开启页面缓存
    keepAlive?:boolean;
    // 拥有路由权限的角色编码
    roles?:string[];
    // 路由title
    title?:string;  
}